﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DTO;
using BUS;

namespace QuanLyHocSinh.GUI
{
    public partial class F_QuanLyMonHoc : DevExpress.XtraEditors.XtraUserControl
    {
        public F_QuanLyMonHoc()
        {
            InitializeComponent();
        }
        static int trangthaimonhoc = 0;
        static int chonkhoilop = 0;
        static int chonmonhoc = 0;
        private void F_QuanLyMonHoc_Load(object sender, EventArgs e)
        {
            LoadCacDataGridView();
        }

        private void LoadCacDataGridView()
        {
            DataTable datadulieu = BUSQuanLyMonHoc.DanhSachMonHoc();
            this.dgvMonHoc.DataSource = datadulieu;
            DataTable datadulieu1 = BUSQuanLyMonHoc.DanhSachMonHoc();
            this.dgvDanhSachMonHoc.DataSource = datadulieu1;

            datadulieu = BUSQuanLyMonHoc.KhoiLop();
            this.dgvDanhSachKhoiLop.DataSource = datadulieu;
            this.lbMaMonHoc.Text = "";
            chonkhoilop = 0;
            chonmonhoc = 0;
            dgvMonHocKhoiLop.DataSource = null;
        }

        private void btnTimKiem_Click(object sender, EventArgs e)
        {
            try
            {
                if (trangthaimonhoc == 0)
                {
                    if (this.txtTenMonHocS.Text != "" && this.txtTenMonHocS.Text != null)
                    {
                        this.txtTenMonHoc.Text = "";
                        DTOMonHoc monhoc = new DTOMonHoc();
                        monhoc.TenMonHoc = txtTenMonHocS.Text;

                        DataTable datadulieu = BUSQuanLyMonHoc.TimKiemMonHoc(monhoc);
                        if (datadulieu.Rows.Count > 0)
                        {
                            dgvMonHoc.DataSource = datadulieu;
                            this.lbMaMonHoc.Text = "";
                        }
                        else
                        {
                            XtraMessageBox.Show("Không Có Môn Học Nào Giống Với Từ Khóa Tìm Kiếm \"" + txtTenMonHocS.Text + "\" !", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                    else
                    {
                        XtraMessageBox.Show("Vui Lòng Nhập Tên Môn Học Cần Tìm Kiếm!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    XtraMessageBox.Show("Vui Hoàn Tất Chức Năng Đang Thực Hiện!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private void gvMonHoc_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)
        {
            try
            {
                if (trangthaimonhoc == 0)
                {
                    this.lbMaMonHoc.Text = gvMonHoc.GetRowCellValue(e.RowHandle, gvMonHoc.Columns["MAMONHOC"]).ToString().Trim();
                    this.txtTenMonHoc.Text = gvMonHoc.GetRowCellValue(e.RowHandle, gvMonHoc.Columns["TENMONHOC"]).ToString().Trim();
                    this.btnBoQua.Enabled = true;
                }
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(ex.Message, "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            try
            {
                if (this.btnThem.Text == "Thêm")
                {
                    this.txtTenMonHoc.Enabled = true;
                    this.btnThem.Text = "Lưu";
                    trangthaimonhoc = 1;
                    this.btnSua.Enabled = this.btnXoa.Enabled = false;
                    this.btnBoQua.Enabled = true;
                }
                else
                {
                    trangthaimonhoc = 0;
                    DTOMonHoc monhoc = new DTOMonHoc();
                    monhoc.TenMonHoc = this.txtTenMonHoc.Text;
                    BUSQuanLyMonHoc.ThemMonHoc(monhoc);
                    LoadCacDataGridView();
                    this.btnThem.Text = "Thêm";
                    this.txtTenMonHoc.Text = "";
                    this.btnSua.Enabled = this.btnXoa.Enabled =  true;
                    this.txtTenMonHoc.Enabled = this.btnBoQua.Enabled = false;
                }
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(ex.Message, "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);    
            }
        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            try
            {
                if (lbMaMonHoc.Text == "" || lbMaMonHoc.Text == "MAMH INVISIBLE")
                {
                    XtraMessageBox.Show("Vui Lòng Chọn Một Môn Học!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                if (this.btnSua.Text == "Sửa")
                {
                    this.txtTenMonHoc.Enabled = true;
                    this.btnSua.Text = "Lưu";
                    trangthaimonhoc = 1;
                    this.btnThem.Enabled = this.btnXoa.Enabled = false;
                    this.btnBoQua.Enabled = true;
                }
                else
                {
                    trangthaimonhoc = 0;
                    DTOMonHoc monhoc = new DTOMonHoc();
                    monhoc.TenMonHoc = this.txtTenMonHoc.Text;
                    monhoc.MaMonHoc = this.lbMaMonHoc.Text;
                    BUSQuanLyMonHoc.SuaTenMonHoc(monhoc);
                    LoadCacDataGridView();
                    this.btnSua.Text = "Sửa";
                    this.txtTenMonHoc.Text = "";
                    this.btnThem.Enabled = this.btnXoa.Enabled = true;
                    this.txtTenMonHoc.Enabled = this.btnBoQua.Enabled = false;
                }
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(ex.Message, "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            try
            {
                if (lbMaMonHoc.Text == "" || lbMaMonHoc.Text == "MAMH INVISIBLE")
                {
                    XtraMessageBox.Show("Vui Lòng Chọn Một Môn Học!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                DialogResult dialogResult = XtraMessageBox.Show(string.Format("Bạn Có Chắc Chắn Muốn Xóa Môn Học {0} ?",txtTenMonHoc.Text), "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (dialogResult == DialogResult.Yes)
                {
                    DTOMonHoc monhoc = new DTOMonHoc();
                    monhoc.TenMonHoc = this.txtTenMonHoc.Text;
                    monhoc.MaMonHoc = this.lbMaMonHoc.Text;
                    BUSQuanLyMonHoc.XoaMonHoc(monhoc);
                    LoadCacDataGridView();
                }
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(ex.Message, "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnBoQua_Click(object sender, EventArgs e)
        {
            trangthaimonhoc = 0;
            this.btnSua.Text = "Sửa";
            this.btnThem.Text = "Thêm";
            this.btnSua.Enabled = this.btnThem.Enabled = this.btnXoa.Enabled = true;
            this.btnBoQua.Enabled = this.txtTenMonHoc.Enabled = false;
            this.txtTenMonHoc.Text = "";
            this.lbMaMonHoc.Text = "";
        }

        private void gvDanhSachKhoiLop_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)
        {
            try
            {
                chonkhoilop = 1;
                DTOKhoiLop khoilop = new DTOKhoiLop();
                khoilop.MaKhoiLop = gvDanhSachKhoiLop.GetRowCellValue(e.RowHandle, gvDanhSachKhoiLop.Columns["MAKHOILOP"]).ToString().Trim();
                this.dgvMonHocKhoiLop.DataSource = BUSQuanLyMonHoc.LietKeMonHoc(khoilop);
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(ex.Message, "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);    
            }
        }

        private void cmdQuaPhai_Click(object sender, EventArgs e)
        {
            try
            {
                if (chonkhoilop == 1)
                {
                    if (chonmonhoc == 0)
                    {
                        XtraMessageBox.Show("Vui Lòng Chọn Môn Học!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                    DTOMonHocKhoiLop monhockhoilop = new DTOMonHocKhoiLop();
                    DataRow Drkhoilop = gvDanhSachKhoiLop.GetFocusedDataRow();
                    if(int.Parse(Drkhoilop["SLHIENTAI"].ToString()) + 1 > int.Parse(Drkhoilop["SLMONHOC"].ToString()))
                    {
                        XtraMessageBox.Show(string.Format("Không Thể Thể Thêm Môn Học Cho {0}! Số Lượng Môn Học Đã Vượt Số Lượng Tối Đa!",Drkhoilop["TENKHOILOP"].ToString()), "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                    monhockhoilop.MaKL = Drkhoilop["MAKHOILOP"].ToString();
                    string tenkhoilop = Drkhoilop["TENKHOILOP"].ToString();
                    DataRow Drmonhoc = gvDanhSachMonHoc.GetFocusedDataRow();
                    monhockhoilop.MaMH = Drmonhoc["MAMONHOC"].ToString();
                    string tenmonhoc = Drmonhoc["TENMONHOC"].ToString();
                    BUSQuanLyMonHoc.ThemMonHocKhoiLop(monhockhoilop);
                    XtraMessageBox.Show(string.Format("Đã Thêm Thành Công Môn Học: {0} Cho Khối Lớp: {1}", tenmonhoc, tenkhoilop), "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    LoadCacDataGridView();
                }
                else
                {
                    XtraMessageBox.Show("Vui Lòng Chọn Khối Lớp!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(ex.Message, "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void gvDanhSachMonHoc_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)
        {
            try
            {
                chonmonhoc = 1;
            }
            catch(Exception ex) 
            {
                XtraMessageBox.Show(ex.Message, "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void cmdQuaTrai_Click(object sender, EventArgs e)
        {
            try
            {
                DataRow Drmonhockhoilop = gvMonHocKhoiLop.GetFocusedDataRow();
                DialogResult dialogResult = XtraMessageBox.Show(string.Format("Bạn Có Chắc Chắn Muốn Xóa Môn Học {0} ?", Drmonhockhoilop["TENMONHOC"].ToString()), "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (dialogResult == DialogResult.Yes)
                {
                    DTOMonHocKhoiLop monhockhoilop = new DTOMonHocKhoiLop();
                    DataRow Drkhoilop = gvDanhSachKhoiLop.GetFocusedDataRow();
                    monhockhoilop.MaKL = Drkhoilop["MAKHOILOP"].ToString();
                    monhockhoilop.MaMH = Drmonhockhoilop["MAMONHOC"].ToString();
                    BUSQuanLyMonHoc.XoaMonHocKhoiLop(monhockhoilop);
                    XtraMessageBox.Show(string.Format("Đã Xóa Thành Công Môn Học: {0} Của: {1}", Drmonhockhoilop["TENMONHOC"].ToString(), Drkhoilop["TENKHOILOP"].ToString()), "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    LoadCacDataGridView();
                }
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(ex.Message, "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }
}
